/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package MPersistencia;

import Conceptos.MuestraDensidad;
import Conceptos.MuestraFisicoQuimica;
import Conceptos.RmuestraFisicoQuimicas;
import Utilidades.ManejadorBaseDatos;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.List;
import java.util.Vector;

/**
 *
 * @author dell
 */
public class MPMuestraFisicoQuimca {
      public static ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
    public static Connection con;

    public static List<RmuestraFisicoQuimicas> getMuestraFisicoQuimicaauxiliar(String fecha) throws SQLException, Exception {
             List<RmuestraFisicoQuimicas> mustrafisicoquimica = new LinkedList();
          
              ResultSet res = null;
         PreparedStatement pst = null;
        ManejadorBaseDatos basedatos =  ManejadorBaseDatos.getInstancia();
        try{
            basedatos.conectar();
            con=basedatos.getConexion();
            String sql="select m.fecha, sum(if(m.jornada='Mañana',m.valor,0))as mañana, "
                    + "sum(IF(m.jornada='tarde',m.valor,0))AS tarde,"
                    + "sum(IF(m.jornada='Medio Dia',m.valor,0))AS Medio_Dia,m.cod_auxiliar,"
                    + "m.cod_puntomuestreo,m.cod_parametros,m.repeticion "
                    + "from  muestrasfisicoquimicas m WHERE m.fecha=? "
                    + "group by m.fecha,m.repeticion,m.cod_auxiliar,"
                    + "m.cod_puntomuestreo,m.cod_parametros "
                    + "order by m.cod_parametros,m.cod_puntomuestreo,m.fecha ";
            
            
            pst = con.prepareStatement(sql);
            pst.setString(1, fecha.trim());
            System.out.println(pst.toString());
            res = pst.executeQuery();
            
      while(res.next()) {
             mustrafisicoquimica.add(RmuestraFisicoQuimicas.load(res));
         }
        
        } finally {
         if(res != null) 
            res.close();
         
         if (pst != null) 
           pst.close();
         }
       
        return mustrafisicoquimica;
    
}
     public static List<RmuestraFisicoQuimicas> getMuestraFisicoQuimicaAuxiliarparametropuntomuestreo(String fecha,String codAuxiliar,String codparametro,String codpuntomuestreo,String tipo) throws SQLException, Exception {
             List<RmuestraFisicoQuimicas> mustrafisicoquimica = new LinkedList();
          
              ResultSet res = null;
         PreparedStatement pst = null;
        ManejadorBaseDatos basedatos =  ManejadorBaseDatos.getInstancia();
        try{
            basedatos.conectar();
            con=basedatos.getConexion();
            String sql="SELECT m.fecha, SUM(IF(m.jornada='Mañana',m.valor,0))AS mañana," 
                    +"SUM(IF(m.jornada='tarde',m.valor,0))AS tarde,"
                    +"SUM(IF(m.jornada='Medio Dia',m.valor,0))AS Medio_Dia,m.cod_auxiliar,"
                    +"m.cod_puntomuestreo,p.descripcion,m.repeticion "
                    +"FROM  muestrasfisicoquimicas m,parametros p "
                    + "WHERE m.fecha=? "
                    +"AND m.cod_auxiliar=?"
                    + " AND p.codigo_parametro=m.cod_parametros "
                    +"AND m.cod_parametros=?" 
                    +"AND m.cod_puntomuestreo=? "
                    + "AND p.tipo=?"
                    + "GROUP BY m.fecha,m.repeticion,m.cod_auxiliar,"
                    +"m.cod_puntomuestreo,m.cod_parametros "
                    +"ORDER BY m.cod_parametros,m.cod_puntomuestreo,m.fecha";
            
            
            pst = con.prepareStatement(sql);
            pst.setString(1, fecha.trim());
            pst.setString(2,codAuxiliar);
            pst.setString(3,codparametro);
            pst.setString(4,codpuntomuestreo);
            pst.setString(5,tipo);
            res = pst.executeQuery();
            
      while(res.next()) {
             mustrafisicoquimica.add(RmuestraFisicoQuimicas.load(res));
         }
        
        } finally {
         if(res != null) 
            res.close();
         
         if (pst != null) 
           pst.close();
         }
       
        return mustrafisicoquimica;
    
}
  public static MuestraFisicoQuimica getMuestraFisicoQuimicapuntoMuestre(String fecha,String Pmustreo,String repeticion,String codparametro) throws SQLException, Exception {
        mbd.conectar();
    con=mbd.getConexion();
        if (fecha==null) {
          throw new SQLException("No hay elemento clave de la clase MuestraDensidad");
     }
         ResultSet rs = null;
         PreparedStatement pst = null;
     MuestraFisicoQuimica muestrafisicoquimca = null;
     try {
         pst = con.prepareStatement("SELECT * FROM Muestrasfisicoquimicas  WHERE fecha = ? AND epeticion=? AND cod_puntomuestreo=? AND cod_parametros=?");
         pst.setString(1, fecha.trim());
         pst.setString(2, repeticion);
         pst.setString(3, Pmustreo);
         pst.setString(4, codparametro);
         rs = pst.executeQuery();
         while(rs.next()) {
             muestrafisicoquimca = MuestraFisicoQuimica.load(rs);
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return muestrafisicoquimca;
    }
}

     public static MuestraFisicoQuimica getMuestraFisicoQuimica(String fecha) throws SQLException, Exception {
        mbd.conectar();
        con=mbd.getConexion();

         ResultSet rs = null;
         PreparedStatement pst = null;
         MuestraFisicoQuimica muestrafisicoquimca = null;
     try {
         pst = con.prepareStatement("select * from Muestrasfisicoquimicas where fecha = ?");
         pst.setString(1, fecha);
         rs = pst.executeQuery();
         while(rs.next()) {
            muestrafisicoquimca = MuestraFisicoQuimica.load(rs);
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return muestrafisicoquimca;
    }
}

public static void crearMuestraDensidad(MuestraFisicoQuimica muestrafisicoquimico) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
    if (con == null ) {
          throw new SQLException(" no hay conexion ");
    }
     PreparedStatement pst = null;
     try {
          pst = con.prepareStatement("Insert Into muestrasfisicoquimicas values(?,?,?,?,?,?,?,?)");
          pst.setString(1,muestrafisicoquimico.getFechainicial());
          pst.setString(2,muestrafisicoquimico.getJornada());
          pst.setString(3,muestrafisicoquimico.getHora());
          pst.setDouble(4,muestrafisicoquimico.getValor());
          pst.setString(5,muestrafisicoquimico.getAuxiliar().getIdentificacion());
          pst.setString(6,muestrafisicoquimico.getPuntomuestreo().getCodigo());
          pst.setString(7,muestrafisicoquimico.getParametros().getCodigo());
          pst.setString(8,muestrafisicoquimico.getRepeticion());//          pst.setInt(8,);//
          pst.executeUpdate();
    }finally {
        if (pst != null) {
             pst.close();
        }
   }
}
public static boolean updateMuestraDensidad (MuestraFisicoQuimica muestrafisicoquimico, String fecha,String tipo) throws SQLException, Exception {
       mbd.conectar();
       con=mbd.getConexion();   
       if ( getMuestraFisicoQuimica(fecha) == null) {
           throw new SQLException ("MuestraDensidad no registrado ");
       }
       PreparedStatement pst = null;
       boolean res = false;
       try {
         pst = con.prepareStatement("Update muestrasfisicoquimicas set  jornada = ?, hora= ?, valor = ?, cod_auxiliar = ?,  cod_puntomuestreo= ?,cod_parametro=?, repeticion = ?  where fecha = ? and tipo=?");
          pst.setString(1,muestrafisicoquimico.getJornada());
          pst.setString(2,muestrafisicoquimico.getHora());
          pst.setDouble(3,muestrafisicoquimico.getValor());
          pst.setString(4,muestrafisicoquimico.getAuxiliar().getIdentificacion());
          pst.setString(5,muestrafisicoquimico.getPuntomuestreo().getCodigo());
          pst.setString(6,muestrafisicoquimico.getParametros().getCodigo());
          pst.setString(7,muestrafisicoquimico.getRepeticion());
          pst.setString(8 , fecha.trim());
          pst.setString(9 , tipo.trim());
          int r = pst.executeUpdate();
       if (r != 0) {
          res = true;
       }
       } finally {
          if (pst != null) {
            pst.close();
          }
       }
         return res;
 }

public static boolean deleteMuestraDensidad(String codigo_auxiliar,String fecha,String repeticion) throws SQLException, Exception {
    mbd.conectar();
       con=mbd.getConexion();
    if (getMuestraFisicoQuimica(fecha) == null) {
        throw new SQLException("No hay elemento clave de la clase MuestraDensidad");
     }
     PreparedStatement pst = null;
     boolean res = false;
     try {
        pst = con.prepareStatement("delete * from muestrasfisicoquimicas where cod_auxiliar = ? and fecha=? and repeticion=?");
        pst.setString(1 , codigo_auxiliar.trim());
        pst.setString(2 , fecha.trim());
        pst.setString(3 , repeticion.trim());
        int r = pst.executeUpdate();
        if (r != 0) {
           res = true;
        }
     } finally {
        if (pst != null) {
           pst.close();
        }
     }
     return res;
}

public static List<MuestraFisicoQuimica> listarMuestrasfisicoquimicasInsituUsu(String codAuxiliar) throws SQLException, Exception {
    mbd.conectar();
       con=mbd.getConexion();
    ResultSet rs = null;
     PreparedStatement pst = null;
     List<MuestraFisicoQuimica> listaMuestraFisicoQuimica = new LinkedList();
     try {
        pst = con.prepareStatement("SELECT m.* FROM muestrasfisicoquimicas m,parametros p,auxiliar a WHERE m.cod_parametros=p.codigo_parametro  AND a.identificacion=m.cod_auxiliar  AND p.tipo='in Situ' AND m.cod_auxiliar='"+codAuxiliar+"' ");
        rs = pst.executeQuery();
        while(rs.next()) {
           listaMuestraFisicoQuimica.add(MuestraFisicoQuimica.load(rs));
        }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
    }
    return listaMuestraFisicoQuimica;
    }

public static List<MuestraFisicoQuimica> listarMuestrasfisicoquimicasLaboratorioUsu(String codAuxiliar) throws SQLException, Exception {
    mbd.conectar();
       con=mbd.getConexion();
    ResultSet rs = null;
     PreparedStatement pst = null;
     List<MuestraFisicoQuimica> listaMuestraFisicoQuimica = new LinkedList();
     try {
        pst = con.prepareStatement("SELECT m.* FROM muestrasfisicoquimicas m,parametros p,auxiliar a WHERE m.cod_parametros=p.codigo_parametro  AND a.identificacion=m.cod_auxiliar  AND p.tipo='Laboratorio' AND m.cod_auxiliar='"+codAuxiliar+"' ");
        rs = pst.executeQuery();
        while(rs.next()) {
           listaMuestraFisicoQuimica.add(MuestraFisicoQuimica.load(rs));
        }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
    }
    return listaMuestraFisicoQuimica;
    }
public static List<MuestraFisicoQuimica> listarMuestrasfisicoquimicasMicrobiologicosUsu(String codAuxiliar) throws SQLException, Exception {
    mbd.conectar();
       con=mbd.getConexion();
    ResultSet rs = null;
     PreparedStatement pst = null;
     List<MuestraFisicoQuimica> listaMuestraFisicoQuimica = new LinkedList();
     try {
        pst = con.prepareStatement("SELECT m.* FROM muestrasfisicoquimicas m,parametros p,auxiliar a WHERE m.cod_parametros=p.codigo_parametro  AND a.identificacion=m.cod_auxiliar  AND p.tipo='Microbiologicos' AND m.cod_auxiliar='"+codAuxiliar+"' ");
        rs = pst.executeQuery();
        while(rs.next()) {
           listaMuestraFisicoQuimica.add(MuestraFisicoQuimica.load(rs));
        }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
    }
    return listaMuestraFisicoQuimica;
    }

public static List<MuestraFisicoQuimica> listarMuestrasfisicoquimicasInsitupuntoUsu(String codPunto, String codPlaya, String codAuxiliar) throws SQLException, Exception {
    mbd.conectar();
       con=mbd.getConexion();
    ResultSet rs = null;
     PreparedStatement pst = null;
     List<MuestraFisicoQuimica> listaMuestraFisicoQuimica = new LinkedList();
     try {
        pst = con.prepareStatement("SELECT m.* FROM muestrasfisicoquimicas m,parametros p,auxiliar a,puntomuestreo pm,playa pl WHERE m.cod_parametros=p.codigo_parametro AND pm.codPlaya=pl.codigo AND a.identificacion=m.cod_auxiliar AND pm.codigo=m.cod_puntomuestreo AND p.tipo='in Situ' AND m.cod_auxiliar='"+codAuxiliar+"' AND pm.codPlaya='"+codPlaya+"' AND m.cod_puntomuestreo='"+codPunto+"' ");
        rs = pst.executeQuery();
        while(rs.next()) {
           listaMuestraFisicoQuimica.add(MuestraFisicoQuimica.load(rs));
        }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
    }
    return listaMuestraFisicoQuimica;
    }

public static List<MuestraFisicoQuimica> listarMuestrasfisicoquimicasLaboratoriopuntoUsu(String codPunto, String codPlaya, String codAuxiliar) throws SQLException, Exception {
    mbd.conectar();
       con=mbd.getConexion();
    ResultSet rs = null;
     PreparedStatement pst = null;
     List<MuestraFisicoQuimica> listaMuestraFisicoQuimica = new LinkedList();
     try {
        pst = con.prepareStatement("SELECT m.* FROM muestrasfisicoquimicas m,parametros p,auxiliar a,puntomuestreo pm,playa pl WHERE m.cod_parametros=p.codigo_parametro AND pm.codPlaya=pl.codigo AND a.identificacion=m.cod_auxiliar AND pm.codigo=m.cod_puntomuestreo AND p.tipo='Laboratorio' AND m.cod_auxiliar='"+codAuxiliar+"' AND pm.codPlaya='"+codPlaya+"' AND m.cod_puntomuestreo='"+codPunto+"' ");
        rs = pst.executeQuery();
        while(rs.next()) {
           listaMuestraFisicoQuimica.add(MuestraFisicoQuimica.load(rs));
        }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
    }
    return listaMuestraFisicoQuimica;
    }

public static List<MuestraFisicoQuimica> listarMuestrasfisicoquimicasMicrobiologicospuntoUsu(String codPunto, String codPlaya, String codAuxiliar) throws SQLException, Exception {
    mbd.conectar();
       con=mbd.getConexion();
    ResultSet rs = null;
     PreparedStatement pst = null;
     List<MuestraFisicoQuimica> listaMuestraFisicoQuimica = new LinkedList();
     try {
        pst = con.prepareStatement("SELECT m.* FROM muestrasfisicoquimicas m,parametros p,auxiliar a,puntomuestreo pm,playa pl WHERE m.cod_parametros=p.codigo_parametro AND pm.codPlaya=pl.codigo AND a.identificacion=m.cod_auxiliar AND pm.codigo=m.cod_puntomuestreo AND p.tipo='Microbiologicos' AND m.cod_auxiliar='"+codAuxiliar+"' AND pm.codPlaya='"+codPlaya+"' AND m.cod_puntomuestreo='"+codPunto+"' ");
        rs = pst.executeQuery();
        while(rs.next()) {
           listaMuestraFisicoQuimica.add(MuestraFisicoQuimica.load(rs));
        }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
    }
    return listaMuestraFisicoQuimica;
    }
public static List<MuestraFisicoQuimica> listarMuestraDensidadPunto(String nombreplaya) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
    ResultSet rs = null;
     PreparedStatement pst = null;
     List<MuestraFisicoQuimica> listaMuestraFisicoQuimica = new LinkedList();
     try {
        pst = con.prepareStatement("SELECT a.*FROM "
                + "muestrasfisicoquimicas a,puntomuestreo pm,auxiliar au "
                + "WHERE  a.cod_puntomuestreo=pm.codigo AND pm.descripcion='"+nombreplaya+"' "
                + "and au.identificacion=a.codAuxiliar");
        rs = pst.executeQuery();
        while(rs.next()) {
           listaMuestraFisicoQuimica.add(MuestraFisicoQuimica.load(rs));
        }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
    }
    return listaMuestraFisicoQuimica;
    }

public static int ultimaMuestra() throws SQLException, Exception {
    mbd.conectar();
       con=mbd.getConexion();
    ResultSet rs = null;
     PreparedStatement pst = null;
     int ult=0;
     try {
        pst = con.prepareStatement("select max(codigo)+1 as ultima from muestrasfisicoquimicas");
        rs = pst.executeQuery();
        while(rs.next()) {
           ult=rs.getInt("ultima");
        }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
    }
    return ult;
    }
}
